#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>

void * func(void * arg){
    // 将传入的参数转换为 int 指针
   int * param =  (int*) arg;
    // 循环 100000 次
   for(int i = 0; i < 100000; i++){
        // 将 param 指向的值加 1
        (*param) ++;
   }
    // 返回 NULL
    return NULL;
}

void * func2(void * arg){
    // 将传入的void*类型参数转换为int*类型
   int * param =  (int*) arg;
    // 循环100000次
   for(int i = 0; i < 100000; i++){
        // 将指针指向的整数加1
        (*param) ++;
   }
    // 返回NULL
    return NULL;
}

int main(){
    int num = 0;
    pthread_t tid;
    // 创建第一个线程
    int res  = pthread_create(&tid, NULL, func, &num);
    if(res){
        // 如果线程创建失败，输出错误信息并退出程序
        perror("pthread_create error");
        exit(1);
    }

    
    pthread_t tid2;
    int res2 = pthread_create(&tid2, NULL, func2, &num);
    if(res2){
        // 如果第二个线程创建失败，输出错误信息并退出程序
        perror("pthread_create error");
        exit(1);
    }

    // 等待第一个线程结束
    pthread_join(tid, NULL);
    // 等待第二个线程结束
    pthread_join(tid2, NULL);

    // 输出num的值
    printf("num = %d\n", num);
   
    return 0;
}